2022年1月13日
Jerry
4028
2023年11月6日
使用ESP8266开发一个实时电子气象表,主要实现功能有 时间、日期、星期、室内温湿度、天气预报等功能。
先上成品图: 刷新率的问题,手机拍出来会闪。。
界面介绍:
代码 解析:
1、WIFI链接:
void connectWiFi()
{
//设置模式
WiFi.mode(WIFI_STA);
//开始连接
WiFi.begin(ssid, pswd);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
//获取到的IP WiFi.localIP()
u8g2.clearBuffer();
u8g2.drawStr(0,20,"Success");
u8g2.drawStr(0,40,WiFi.localIP().toString().c_str());
u8g2.sendBuffer();
}
2、NTP时间同步:
#include <WiFiUdp.h>
#include <NTPClient.h>
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "ntp.aliyun.com", 3600 * 8, 1800 * 1000);
void setup() {
timeClient.begin();
}
void loop(){
timeClient.update();
nowTime = timeClient.getFormattedTime();
}
关于星期,翻 NTPClient 代码发现有个方法返回的是星期:timeClient.getDay(); 这个函数返回 0-6,其中0 代表 周日 Sunday
于是,有了下面这个转换日期的函数
char* getDayStr(int day)
{
switch(day)
{
case 0:
return "Sun";
break;
case 1:
return "Mon";
break;
case 2:
return "Tue";
break;
case 3:
return "Wed";
break;
case 4:
return "Thur";
break;
case 5:
return "Fri";
break;
case 6:
return "Sat";
break;
}
}
3、温湿度获取:
温湿度使用的是DHT11模块,有现成的arduinuo库 #include "DHTesp.h"
#include "DHTesp.h"
//dht 初始化
dht.setup(D0, DHTesp::DHT11); // Connect DHT sensor to D0
//dht 读取
float humidity = dht.getHumidity();
float temperature = dht.getTemperature();
Serial.println(humidity);
Serial.println(temperature);
4、u8g2打印显示:
使用ESP8266模块驱动0.96寸OLED ,网上的教程有很多,这里要注意OLED的坐标系,
还有他的字体库:https://github.com/olikraus/u8g2/wiki/u8g2setupcpp
国内经常打不开,打开也看不到图片,于是我把他的pdt下载了下来:https://www.jerrycoding.com/tool/u8g2lib/
连线如下:
坐标系如下:
基本的u8g2函数参考:https://blog.csdn.net/weixin_30510153/article/details/96227475
本篇到这结束,有上面几个方法就能实现 实时时间、星期、温湿度打印啦!
原创文章,转载请注明出处:
https://jerrycoding.com/article/esp8266-clock
《物联网开发》
0
微信
支付宝